


namespace Flit.Samples.Validation
{
	public partial class Validation : FluentStateBase
	{
		
		public Validation(){
		}
		
		#region Data
		#endregion
		
	
		#region Actions
		
		partial void OnThat(string name, string value);
		public StringValue That(string name, string value) 
		{
			StringValue __newFragment = new StringValue(name, value);
			Children.Add(__newFragment);
			__newFragment.Parent=this;
			OnThat(name, value);
			return __newFragment;
		}
		
		
		partial void OnThat(string name, long value);
		public IntegerValue That(string name, long value) 
		{
			IntegerValue __newFragment = new IntegerValue(name, value);
			Children.Add(__newFragment);
			__newFragment.Parent=this;
			OnThat(name, value);
			return __newFragment;
		}
		
		
		partial void OnThat(string name, double value);
		public FloatValue That(string name, double value) 
		{
			FloatValue __newFragment = new FloatValue(name, value);
			Children.Add(__newFragment);
			__newFragment.Parent=this;
			OnThat(name, value);
			return __newFragment;
		}
		
		#endregion

	}
	public partial class StringValue : FluentStateBase
	{
		
		public StringValue(string name, string value){
			this.Name = name;
			this.Value = value;
		}
		
		#region Data
		public string Name {get;set;}
		public string Value {get;set;}
		#endregion
		
	
		#region Actions
		
		partial void OnLength();
		public StringLength Length() 
		{
			StringLength __newFragment = new StringLength();
			Children.Add(__newFragment);
			__newFragment.Parent=this;
			OnLength();
			return __newFragment;
		}
		
		#endregion

	}
	public partial class StringLength : FluentStateBase
	{
		
		public StringLength(){
		}
		
		#region Data
		#endregion
		
	
		#region Actions
		
		partial void OnShorterThan(int maxLength);
		public StringLength ShorterThan(int maxLength) 
		{
			StringLength __newFragment = new StringLength();
			Children.Add(__newFragment);
			__newFragment.Parent=this;
			OnShorterThan(maxLength);
			return __newFragment;
		}
		
		
		partial void OnLongerThan(int minLength);
		public StringLength LongerThan(int minLength) 
		{
			StringLength __newFragment = new StringLength();
			Children.Add(__newFragment);
			__newFragment.Parent=this;
			OnLongerThan(minLength);
			return __newFragment;
		}
		
		#endregion

	}
	public partial class IntegerValue : FluentStateBase
	{
		
		public IntegerValue(string name, long value){
			this.Name = name;
			this.Value = value;
		}
		
		#region Data
		public string Name {get;set;}
		public long Value {get;set;}
		#endregion
		
	
		#region Actions
		
		partial void OnIs();
		public IntegerValidation Is() 
		{
			IntegerValidation __newFragment = new IntegerValidation();
			Children.Add(__newFragment);
			__newFragment.Parent=this;
			OnIs();
			return __newFragment;
		}
		
		#endregion

	}
	public partial class FloatValue : FluentStateBase
	{
		
		public FloatValue(string name, double value){
			this.Name = name;
			this.Value = value;
		}
		
		#region Data
		public string Name {get;set;}
		public double Value {get;set;}
		#endregion
		
	
		#region Actions
		
		partial void OnIs();
		public FloatValidation Is() 
		{
			FloatValidation __newFragment = new FloatValidation();
			Children.Add(__newFragment);
			__newFragment.Parent=this;
			OnIs();
			return __newFragment;
		}
		
		#endregion

	}
	public partial class IntegerValidation : FluentStateBase
	{
		
		public IntegerValidation(){
		}
		
		#region Data
		#endregion
		
	
		#region Actions
		
		partial void OnLessThan(long maxValue);
		public IntegerValidation LessThan(long maxValue) 
		{
			IntegerValidation __newFragment = new IntegerValidation();
			Children.Add(__newFragment);
			__newFragment.Parent=this;
			OnLessThan(maxValue);
			return __newFragment;
		}
		
		
		partial void OnGreaterThan(long minValue);
		public IntegerValidation GreaterThan(long minValue) 
		{
			IntegerValidation __newFragment = new IntegerValidation();
			Children.Add(__newFragment);
			__newFragment.Parent=this;
			OnGreaterThan(minValue);
			return __newFragment;
		}
		
		#endregion

	}
	public partial class FloatValidation : FluentStateBase
	{
		
		public FloatValidation(){
		}
		
		#region Data
		#endregion
		
	
		#region Actions
		
		partial void OnLessThan(double maxValue);
		public FloatValidation LessThan(double maxValue) 
		{
			FloatValidation __newFragment = new FloatValidation();
			Children.Add(__newFragment);
			__newFragment.Parent=this;
			OnLessThan(maxValue);
			return __newFragment;
		}
		
		
		partial void OnGreaterThan(double minValue);
		public FloatValidation GreaterThan(double minValue) 
		{
			FloatValidation __newFragment = new FloatValidation();
			Children.Add(__newFragment);
			__newFragment.Parent=this;
			OnGreaterThan(minValue);
			return __newFragment;
		}
		
		
		partial void OnNotInfinity();
		public FloatValidation NotInfinity() 
		{
			FloatValidation __newFragment = new FloatValidation();
			Children.Add(__newFragment);
			__newFragment.Parent=this;
			OnNotInfinity();
			return __newFragment;
		}
		
		
		partial void OnARealNumber();
		public FloatValidation ARealNumber() 
		{
			FloatValidation __newFragment = new FloatValidation();
			Children.Add(__newFragment);
			__newFragment.Parent=this;
			OnARealNumber();
			return __newFragment;
		}
		
		#endregion

	}

}